昨日题目答案
onblur 在 input 失去焦点时候触发。与之对应的是 onfocus 事件。无论 input 是否有值、值是否有变化,都会触发。
onchange 在 input 发生变化然后在失去焦点的时候触发。且先于 onblur 触发。onchange 只有在 input 的值必须与前一次输入不同才会触发。
<body>
<input type="text" id="a" placeholder="onchange" onchange="onfun()">
<input type="text" id="b" placeholder="onblur" onblur="onblu()">
<script>
function onfun() {console.log('onchange')}
function onblu() { console.log('onblur') }
</script>
</body>
文档流就是指元素在 HTML 文档中位置顺序决定排布的过程。HTML 元素有块级元素和行内元素,块级元素一个占一行,行内元素在一行内依次排布。整体元素从上到下的排布顺序如同瀑布一样。
脱离文档流即脱离了排布的规则。可以使用 float
、absolute/fixed
来脱离文档流。脱离文档流的元素不受文档流内元素的影响。
解法1:
function Fibonacci (n) {
let arr = [1, 1]
for (let i = 2; i < n + 1; i++) {
arr[i] = arr[i - 1] + arr[i - 2]
}
return arr
//return arr[n]
}
解法2:
let Fibonacci = num => {
if (!Fibonacci.sequence) Fibonacci.sequence = [1, 1]
if (Fibonacci.sequence[num] !== undefined) return Fibonacci.sequence.slice(0, num)
for (var i = Fibonacci.sequence.length; i < num + 1; i++) {
Fibonacci.sequence[i] = Fibonacci.sequence[i - 1] + Fibonacci.sequence[i - 2]
}
return Fibonacci.sequence.slice(0, num)
}
解法3:
const fib = (limit = 10, arr = [1, 1]) => {
// 使用循环
// if (limit < 3) {
// return arr;
// }
// const result = arr;
// while (result.length < limit) {
// const len = result.length;
// result.push(result[len - 1] + result[len - 2]);
// }
// return result;
// 使用递归
if (arr.length < limit) {
const len = arr.length;
return fib(limit, [...arr, arr[len - 1] + arr[len - 2]]);
} else {
return arr;
}
};
console.log(fib());
console.log(fib(9));